CNC made CPU water block project.

It seems to be pretty universal that people find themselves, having completed a project to build their own CNC mill, and having acquired the requisite CNC software, casting about looking for something to make with their new robotic machinist.
They often end up making signs or lithopanes, which is not really satisfactory.
Not satisfactory because they are all one piece, one lump, one part. No challenge. No real skills.

Far better to make something practical, something that actually does something, but what?

Having built the CNC machine and acquired the CNC software, it soon dawns on the hobbyist that creating software models in CAD software to export to CAM software to create tool paths for your CNC machine to make is not quite as straightforwards as it appeared to be, back at the beggining of the project, back when building the CNC machine looked like the only challenge on the horizon.

So, what we have here is a simple project, which walks you through designing and making a CPU waterblock for watercooling a Pentium4 type CPU, but which can easily be adapted to any CPU, GPU or whatever.


  1. There is an unfortunate tendency, as soon as one gets into CNC, to start seeing everything as a "billet", eg a block of material, inside which the part you want is hiding, only to be revealed by your CNC machine following the tool path and removing material. This is unfortunate because it not only wastes material, of necessity it wastes machining time, so always look for ways in which your desired object can be made in smaller sections, from smaller billets, with less waste material and consequently faster.

  2. There is a lack of common sense as soon as one gets into CNC, people instantly forget that we are dealing with a Cartesian co-ordinate system (X, Y & Z axes) and so for example specifying every dimension to 0.01 mm instead of 0.10 mm does not mean a tenfold increase complexity but a thousandfold, accuracy and precision are not the same thing.

  3. One of the important lessons to learn when making something is the actual making process itself, even with CNC, no, especially with CNC, still requires the human operator to engage brain at every juncture.
The generic Intel P4 aircooled aluminium heatsink shown here has approximate overall dimensions (all dimensions in this document will be millimetres) 83 x 68 x 35 mm, so for this project if we choose these dimensions for our CPU waterblock, this means we can use the aircooled heatsink retaining clamps, which makes life simpler and cheaper.

Obviously you can alter the design to use a different clamping method, but there is a lesson in economy here.

Obviously we could make a waterblock with only one layer of acrylic and one metal plate, but that isn't the object of the excercise here, either.

So, we have approximate project dimensions of 83 x 68 x 35 mm.

Bearing in mind the comments above about the "billet mentality", we can save a lot of material costs and machining time by doing this in layers.
  1. Layer 01 facricated from 82 x 68 x 10mm thick acrylic.
    This layer holds the hose barbs.
  2. Layer 02 fabricated from 82 x 68 x 10 mm thick acrylic.
    This later channels the flow.
  3. Layer 02 fabricated from 82 x 68 x 10 mm thick acrylic.
    This layer carries the aluminium.
  4. Leyer 04 fabricated from 82 x 50 x 8 to 10 mm thick aluminium.
    This layer carries heat from CPU to coolant.
In this way we can build up quite a complex structure from a handful of simple parts, each of which is made from a simple and cheap piece of stock. This entire heatsink should cost approximately 5 UK pounds to make.

In the ghost image on the right you can see that there are a total of 12 holes through drilled all 4 layers of the project.

These holes are machined to 2.4 mm diameter, in layer 04, the aluminium plate, these 12 holes are then tapped to 3.0 mm, and in the Layers 01, 02 and 03 these 12 holes are enlarged to 3.0 mm clearance, and then  12 off 3 x 35 mm socket head screws will clamp the entire assembly together.

Layer 04 can be made from any old piece of gash 10 mm thick alu plate, just flycut one side flat, then flycut the other side back to a parallel thickness of 8 mm, or, get some already flat 8 mm thick alu (or copper if you prefer) plate.

Personally I wouldn't go any thinner than 6 mm for this base plate if you modify this design yourself. It is likely to warp.

Since layer 02 and layer 03 both require (apparently) 2 sided machining and since all 4 layers need to nest on top of one another it is important to have reference points, CNC machining is all about Cartesian movement in X Y and Z axes, and we need reference points in order to ensure that we take take each layer and state with certainly that "this" is equivalent to zero on all three axes.

A reasonable way of achieving this on this project is to first drill all 12 off 2.4 mm diameter holes. We can do that with this piece of nc code
which says the following
%
O0001(T)
N1 G00 G17 G21 G40 G49 G80 G90
N2 T1 M6 (TLDIA=2.4)
N3 G00  X77.  Y45. M03
N4 G43 H1 Z2.
N5 G83 X77. Y45. Z-10. Q1. R2. F100
N6 Y5.
N7 X41. Y45.
N8 X61.
N9 Y5.
N10 X41.
N11 X77. Y25.
N12 X5. Y5.
N13 X21. Y45.
N14 Y5.
N15 X5. Y25.
N16 Y45.
N17 G80
N18 M05
N19 M30
%
This is a peck drilling cycle, specifying a 2.4 mm diameter drill, drilling each hole in 1mm deep pecks. A generic jobber drill set will contain a 2.5 mm drill, which if you actually measure it will be 2.4 and a bit mm in diameter, drills are always undersize.

Note that this piece of nc code is for the 82 x 50 alu plate, it will of course also drill the holes in the 82 x 68 acrylic, but remember to adjust the starting position to allow for the fact that the acrylic is 18 wider in Y axis than the alu, so if all this was held in a work vice you'd need to allow for a 9 mm error when resetting the work home X0, Y0, Z0 before starting the nc code.

Once we have drilled these 12 holes in the layer 01, 02 and 03 acrylic, and the layer 04 alu, do not tap the alu to 3mm or clearance drill the acrylic to 3mm yet, while they are still all the same size we can still use them all as reference points, and not only ensure that each layer is started correctly, but also that layers 02 and 03, which both require 2 sided machining, are referenced correctly when we flip them over.

So now we can start on the Acrylic, with the one sided object, layer 01. Here is the nc code
%
O0001(T01.NC)
N1 G00 G17 G21 G40 G49 G80 G90
N2 T1 M6 (TLDIA=6)
N3 G00  X29.5  Y34. M03
N4 G43 H1 Z2.
N5 G01 Z-1. F75
N6 G02 X20.5 I-4.5 J0. F150
N7 X29.5 I4.5 J0.
N8 G00 Z2.
N9 X52.5
N10 G01 Z-1. F75
N11 G02 X61.5 I4.5 J0. F150
N12 X52.5 I-4.5 J0.
N13 G00 Z2.
N14 X29.5
N15 G01 Z-2. F75
N16 G02 X20.5 I-4.5 J0. F150
N17 X29.5 I4.5 J0.
N18 G00 Z2.
N19 X52.5
N20 G01 Z-2. F75
N21 G02 X61.5 I4.5 J0. F150
N22 X52.5 I-4.5 J0.
N23 G00 Z2.
N24 X29.5
N25 G01 Z-3. F75
N26 G02 X20.5 I-4.5 J0. F150
N27 X29.5 I4.5 J0.
N28 G00 Z2.
N29 X52.5
N30 G01 Z-3. F75
N31 G02 X61.5 I4.5 J0. F150
N32 X52.5 I-4.5 J0.
N33 G00 Z2.
N34 X29.5
N35 G01 Z-4. F75
N36 G02 X20.5 I-4.5 J0. F150
N37 X29.5 I4.5 J0.
N38 G00 Z2.
N39 X52.5
N40 G01 Z-4. F75
N41 G02 X61.5 I4.5 J0. F150
N42 X52.5 I-4.5 J0.
N43 G00 Z2.
N44 X29.5
N45 G01 Z-5. F75
N46 G02 X20.5 I-4.5 J0. F150
N47 X29.5 I4.5 J0.
N48 G00 Z2.
N49 X52.5
N50 G01 Z-5. F75
N51 G02 X61.5 I4.5 J0. F150
N52 X52.5 I-4.5 J0.
N53 G00 Z2.
N54 X29.5
N55 G01 Z-6. F75
N56 G02 X20.5 I-4.5 J0. F150
N57 X29.5 I4.5 J0.
N58 G00 Z2.
N59 X52.5
N60 G01 Z-6. F75
N61 G02 X61.5 I4.5 J0. F150
N62 X52.5 I-4.5 J0.
N63 G00 Z2.
N64 X29.5
N65 G01 Z-7. F75
N66 G02 X20.5 I-4.5 J0. F150
N67 X29.5 I4.5 J0.
N68 G00 Z2.
N69 X61.5
N70 G01 Z-7. F75
N71 G02 X52.5 I-4.5 J0. F150
N72 X61.5 I4.5 J0.
N73 G00 Z2.
N74 X29.5
N75 G01 Z-8. F75
N76 G02 X20.5 I-4.5 J0. F150
N77 X29.5 I4.5 J0.
N78 G00 Z2.
N79 X52.5
N80 G01 Z-8. F75
N81 G02 X61.5 I4.5 J0. F150
N82 X52.5 I-4.5 J0.
N83 G00 Z2.
N84 X29.5
N85 G01 Z-9. F75
N86 G02 X20.5 I-4.5 J0. F150
N87 X29.5 I4.5 J0.
N88 G00 Z2.
N89 X52.5
N90 G01 Z-9. F75
N91 G02 X61.5 I4.5 J0. F150
N92 X52.5 I-4.5 J0.
N93 G00 Z2.
N94 X29.5
N95 G01 Z-10. F75
N96 G02 X20.5 I-4.5 J0. F150
N97 X29.5 I4.5 J0.
N98 G00 Z2.
N99 X52.5
N100 G01 Z-10. F75
N101 G02 X61.5 I4.5 J0. F150
N102 X52.5 I-4.5 J0.
N103 G00 Z2.
%
and we can see here that this time we are using a 6mm diameter end mill, and we are making two circular pockets, each 15 mm in diameter, with centres 32 mm apart, each pocket going straight through the acrylic to create a 15 mm hole. into these holes we fit our hose barbs.

The next layer, layer 02, is the first of the "two sided" objects, on the top side it has two 5mm deep approximately triangular shaped recesses, which line up with the 15 mm holes in the layer 01 object, and at one end of each recess is a slot through. In fact this layer 02 object could be made as a one sided machining process, provided the reach of the cutting tool is long enough.

The next layer, layer 03, is a "two sided" object, on the top side it has a pocket cut through the full depth, to allow the coolant to circulate in from the slot on one side of the layer 02 object, across the channel and out the slot in the other side of the layer 02 object. In addition, it also has a full length slot on the underside. Like object layer 02, this object could be machined from one side only, in this case by machining it "upside down".

It is important to note that by utilising much cheaper materials, eg 10 mm sheet instead of a thick block, we are actually making an object that could not be made from solid (except by adding material, eg stereolithography) on a mill, and it is also important to note that with some care and thought, what at first appear to be objects that require 2 sided machining, can actually be machined in "one shot" by first rotating them through a multiple of 90 degrees on one or more axes.

At this point it should occur to the machinist that in fact all three acrylic layers, 01, 02 and 03, could be made in a single shot from a single sheet of 10 mm acrylic, only layer 03 would need to be created "upside down" and then flipped over before assembly.

We also need to note that our milling cutter is quite capable of cutting a square corner on an outside profile, but when cutting an inside profile the "corner" will have a minimum radius equal to our milling cutter tool radius. If the layer 04 aluminium object was not fitted to layer 03 as a full length slot, but instead as a recessed rectangular object, we'd have to pay close attention to this detail.

The reader is cautioned to use the dxf (8kb rar) or stl (442kb rar) versions of the objects supplied with this file to create your own tool paths, you are cautioned against using any .nc code supplied for two reasons, one, it might not be suitable for your hardware, and two, it might have errors. (hint, maybe even deliberately left in CAM errors for you to find and compare to your CAM code)

Conversion from "object model" files such as the dxf / stl files in CAM software is far from being an infallible or inflexible process, and it isn't even a case that ten readers with ten different "Brands" of CAM software will get ten different sets of tool paths, ten users using the same CAM software  will probably get ten different sets of tool paths.

Nor should it be assumed that just because the CAM software produced the tool path, it is correct, this is like saying that a spreadsheet never ever gives the wrong answer. In the sense that the spreadsheet isn't making any mathematical errors, this is true, however in the human sense of the word the spreadsheet is capable of producing more "wrong" answers than "right" ones.

The reader can easily adapt this project to suit any other CPU or GPU, and of course the project itself can be made very cheaply, and due to the choice of materials even mistakes are not expensive, so it is quite practical to make several in series to see how our machining and CNC skills are improving.

Despite the simplicity of each of the 4 objects (I'm discounting the 12 socket screws and 2 hose barbs, just buy them) that go together to make up this water block project, it does nevertheless introduce the machinist to all of the fundamental concepts of home CNC machining, because you are creating four objects that have to fit together and work together as a single whole, and, quite apart from that, there is the separate issue of finish, in that it is quite possible to create a water block that works perfectly, but looks dreadful, just as it is possible to create 4 beautifully finished parts that will not work together.

It is worth, once again, stressing the point that human visualization and thought is the key here, object layer 02 and 03 appear to be objects that require two sided machining, until you look at them closer and see that rotating one of them 180 degrees about the Y axis, and the other one simply paying attention to the usable length and diameter of milling cutter selected for the CAM software, turns both of them into 1 sided machining operations.

It is also worthwhile visualizing as a separate solid the "void" created by object layers 01, 02 and 03, through which the coolant water will pass. Even though this void has no substance, it is nonetheless the thing which we have created and the thing that makes the object a practical CPU water block.

Even once we have made all four objects to a significant degree of perfection and finish quality, it is still quite trivial to turn the whole thing into useless junk by selecting the wrong type of socket screw, the wrong length, torquing them incorrectly (they only need to be nipped up) or selecting the wrong type of sealant or adhesive or simply applying it messily.

The nice thing about this project is that all CNC machining is dependent upon CPU cycles, and the home CNC machinist is likely to be pushing his CPU flat out during the CAD and CAM stage, plus workshops aren't the cleanest of places, PC innards tend to get a coating of fluff in fairly short order, so replacing the standard heat sinks with water blocks stops all the fan noise and stops all the dust laden workshop air being drawn through the PC, so it is a project that has an actual practical use for the machinist themselves, rather than a gift for someone else.

In closing, allow me to suggest some tips.
  1. Nothing in this project requires an accuracy or precision greater than 0.1 mm.
  2. Use generic alu or copper for layer 04, and generic sign or window acrylic (eg "10 year" acrylic) for layers 01 to 03.
  3. While WD40 is great for lubricating HSS cutters cutting aluminium, when cutting Acrylic a jet of air is all that is needed.
  4. Cut both acrylic and alu on the climb for a good finish.
  5. Do not attempt to "improve" the designs here until AFTER you have proven your ability by making one, quality, waterblock.
  6. Scrap computer hard disks (body & platters) are a nice source of small section, decent quality, aluminium stock.
It is a physical impossibility for a machinist with blunt cutters, with no ability to get things square, with no knowledge of cutter chip loads and feed and speeds, etcetera, to end up with a nice looking waterblock, though you *may* end up with a working one that doesn't leak, and simple persistence and repetition does not remedy any of these issues.

In effect what we have here is the equivalent of the fried egg, so simple anyone can do it, in theory, it isn't a complex piece that absolutely requires a certain level of skill to even attempt, however, there is a direct correlation between the quality of the finished item and the care that goes into it.

I also selected a generic CPU waterblock for this project because it is a project that can be made for approximately a tenth or less of the cost of buying one, therefore it is a project that the home machinist could potentially sell in small numbers, and it is this small batch production process from which the machinist will learn the most. Plus of course ever home CNC machinist has at least one workshop computer that could use water cooling.

For the record I use Rhino for CAD, MeshCAM for CAM and Mach3 for CNC.

If you need me try https://surfbaud.dyndns.org/ (self signed https cert)

December 2008.